// var a = {
//     a: 1,
//     b: 2
// };

// function test(x) {
//     x.a = 10;
//     console.log(x);
// }
// test(a); // { a: 10, b: 2 } 
// console.log(a); // { a: 10, b: 2 }

// var a = {
//     a: 1,
//     b: 2
// };

// function test(x) {
//     x = 10;
//     console.log(x);
// }
// test(a); // 10 
// console.log(a); // { a: 1, b: 2 }

// let a = {name:100};
// let b = a //0xx00012
// b = {name:105}
// console.log(a);

// let a = {name:100,obj:{title:'zhangsan'}}
// let b = shallowCopy(a);
// // b.obj.title = 'lisi'
// // b.name = 200
// b.obj = 50
// console.log(b);
// console.log(a);
// function shallowCopy(src) {
//     const dist = {}
//     for (let prop in src) {
//       if (src.hasOwnProperty(prop)) {
//         dist[prop] = src[prop]
//       }
//     }
//     return dist
// }
/**  上面是浅拷贝和赋值的研究对比 */

// function add(){
//   var num = 100;
//   return function(){
//     num++
//     console.log(num);
//   }
// }
// add()()
// add()()
// add()()
// var fn = add();
// fn()
// fn()
// fn()


FocusNavigationEvent(){
    // 1.服务端向客户端发送公钥
    // 2.中间人拦截公钥，并向客户端发送一个伪造的公钥
    // 3.客户端收到伪造的公钥后，通过自己的私钥生成一个用来传输数据的秘钥，生成加密的hash值发给服务器
    // 4.被中间人拿到这个hash，通过自己的私钥获得用来传输数据的秘钥
    // 5.同时hash值传给服务端
    // 6.服务端拿到这个假的hash值后通过自己的私钥进行解密，获得了假的秘钥
    // 7.服务端通过这个假的秘钥来传递数据
}
